package com.atbeijing.bigdata.spark.core.rdd.instance

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark02_Instance_Disk_Par {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("Par")
        val sc = new SparkContext(conf)

        // TODO RDD - 实例化 - 磁盘文件

        // textFile方法提供了2个参数
        // 第一个参数为文件（目录）路径
        // 第二个参数为最小分区数量, 这个参数可以不传，使用默认值
        //      默认值：math.min(defaultParallelism, 2)

        // 分区数量的设定
        // 传参 => 配置参数 => 当前环境总核数
        //val rdd = sc.textFile("data/word.txt")

        // TODO Spark中读取文件，分区数量是如何确定？
        // 1. Spark读取文件采用的就是Hadoop的读取方式
        // 2. 底层实现
        //    totalSize : 总的文件字节数 7
        //    minPartitions: 最小分区数 2
        //    goalSize  : 每个分区存放的字节数量 7 / 2 = 3
        //    7 / 3 = 2...1 + 1 = 3

        val rdd = sc.textFile("data/word.txt", 2)

        rdd.saveAsTextFile("output")

        sc.stop()
    }
}
